在講 TLS/HTTPS 的時候,常會看到「這個網站有由受信任的 CA 簽發的憑證」那 CA 到底是什麼?它為什麼很重要?今天就帶大家來看一下什麼是 Certificate Authority!
CA(Certificate Authority)就是發行 X.509
憑證的「憑證發行機構」,它負責簽章並背書一個公鑰屬於某個主機或組織,讓使用者可以信任那個網站的身分。
X.509
是一種國際標準(ITU-T 定義的格式),用來描述「公鑰憑證」的資料結構。而 TLS 就是一種用 X.509
格式建立的公鑰憑證,比如說:
簡單說,它是一份「身分證 + 鑰匙 + 簽章」的組合。用一個表格來解釋它:
功能 | 說明 | 實際應用 |
---|---|---|
加密 (Encryption) | 保護資料不被竊聽 | HTTPS、VPN |
身分驗證 (Authentication) | 確認伺服器或使用者身份 | 網站信任、企業憑證登入 |
完整性 (Integrity) | 防止資料被竄改 | TLS 封包驗證 |
簽章 (Signing) | 驗證軟體/文件真偽 | Code Signing、PDF 電子簽名 |
不可否認性 (Non-repudiation) | 證明「當時真的簽過」 | 時戳、公文簽核 |
在台灣我們也有一個機構 TWCA,提供的服務包括:頒發憑證、電子簽章、時戳、身分驗證。如果你也打算寫一個自己的網站,可以到這個平台申請 TLS 憑證為你的網頁增添一個官方背書。
想像真實世界的身分驗證:你要相信某個人是真正的警察,就會看他有沒有帶警察證。CA 就像發證的機關(警察局),而憑證就是那張警察證,上面寫著「這把公鑰屬於 www.example.com
」。
瀏覽器和作業系統內建了一個受信任 root CA 名單(trust store),只要憑證鏈能連回到其中一個 root CA,就被視為「可信」。
PKI(Public Key Infrastructure,公鑰基礎建設) 就是整個 HTTPS、CA、數位簽章、TLS 安全的「地基」。如果說 X.509
憑證是一張「身分證」,那 PKI 就是那整個「發證、驗證、撤銷、保存」的政府系統。
實務上,我們在架網站的時候都會使用 Let’s Encrypt:一個完全免費的 CA,讓任何人都能快速取得受信任憑證,時間到了也可以自動換證。
CA 的私鑰一旦外洩,攻擊者就能簽發看似合法的憑證(非常危險)。這就是為什麼 CA 要受嚴格審核,現代防護也引入了 Certificate Transparency(CT)機制來降低風險。
在 HTTPS 普及之前(大約 2010 年前後),CA(憑證授權中心)幾乎是「黑盒子運作」的。你只能「相信」它真的只發合法的憑證,但實際上使用者無法查到某個網域是不是被多發了憑證、甚至被偽造。
真實案例就是 2011 年 DigiNotar 被駭,詳細來源可看 BBC 新聞網:https://www.bbc.com/news/technology-14989334
荷蘭的 CA「DigiNotar」被入侵後,駭客利用它的私鑰簽發了超過 500 張假憑證,包括:*.google.com
、*.facebook.com
、*.yahoo.com
等等。
結果伊朗等地的使用者真的被 MITM 攻擊成功。這件事直接導致 DigiNotar 被 Google、Mozilla、Microsoft 全面撤信。這場災難讓全世界的瀏覽器與安全社群意識到:
「我們需要一個公開透明的機制,讓所有 CA 的簽發行為都能被監督。」
這就是 Certificate Transparency(CT)的起源。每張由 CA 簽發的 SSL/TLS 憑證,都必須登錄到一個「公開的憑證日誌(CT Log)」裡。
至於要怎麼檢查網站的憑證呢?
最簡單的方式就是在瀏覽器 URL 網址列的旁邊有一個鎖頭,點開就可以查看 Certificate,同時查看 Issuer(簽發者)與指紋。
遠振資訊的文章
digicert 的文章
yumili 的 iThome 文章